# -*- coding: utf-8 -*-
# @Author  : haomh
# @Time    : 2025/11/7 10:16
# @Function:

# def fn1():
#     return 100
#
#
# print(fn1)
# print(fn1())

# lambda表达式 注意：直接打印lambda表达式，输出的是次lambda表达式的内存地址
# fn2 = lambda: 100
# print(fn2)
# print(fn2())
#
#
# def add(a, b):
#     return a + b
#
#
# print(add(1, 2))
#
# fn3 = lambda a, b: a + b
# print(fn3(1, 2))

# 无参数

# 一个参数

# 默认参数
# fn4 = lambda a, b, c=100: a + b + c
# print(fn4(1, 2))

# 可变参数：*args
# fn6 = lambda *args: args
# print(fn6(1, 2, 3))

# 可变参数 **kwargs
# fn7 = lambda **kwargs: kwargs
# print(fn7(name='Tom', age=20))

# *args 和 **kwargs的区别
# def func(a, b, *args, **kwargs):
#     print("固定参数：", a, b)
#     print("位置参数元组：", args)
#     print("关键字参数字典：", kwargs)
#
# func(1, 2, 3, 4, name="Bob", score=90)
# # 输出：
# 固定参数： 1 2
# 位置参数元组： (3, 4)
# 关键字参数字典： {'name': 'Bob', 'score': 90}

# lambda的应用
# 带判断的labmda

# fn7 = lambda a, b: a if a > b else b
# print(fn7(4, 5))

# 列表数据按字典key的值排序
students = [
    {'name': 'Tom', 'age': 20},
    {'name': 'Rose', 'age': 19},
    {'name': 'Jack', 'age': 22}
]

# 按name值升序排列
students.sort(key=lambda x: x['name'])
print(students)

# 按name值降序排列
students.sort(key=lambda x: x['name'], reverse=True)
print(students)

# 按age值升序排列
students.sort(key=lambda x: x['age'])
print(students)

#
students.sort(key=lambda x: x['age'], reverse=True)
print(students)
